﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        //        一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
        //请编写相关代码，
        //1、捕获FormatException异常，并打印输出“异常已处理；
        //2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
        //3、捕获一般异常Exception异常。
        //4、最终处理finally
        //录入成绩结束后，请输出，总学生数，总分数，平均分。
        static void Main(string[] args)
        {
            string str;
            float d = 0;
            
            Console.WriteLine("欢迎使用考试管理系统！");
            Dictionary<string, float> diction = new Dictionary<string, float>();
            while (true)
            {

                while (true)
                {
                    Console.WriteLine("请输入学号：");
                    str = Console.ReadLine();
                    if (diction.ContainsKey(str))
                    {
                        Console.WriteLine("学号已存在，请重新输入：");
                        continue;//结束循环
                    }
                    break;
                }

                    try
                    {
                        Console.WriteLine("请录入考生成绩：");
                        d = float.Parse(Console.ReadLine());
                    }


                    catch (FormatException f)
                    {
                        Console.WriteLine("异常已处理！");
                        Console.WriteLine(f.Message);
                        Console.WriteLine(f.Source);
                        Console.WriteLine(f.StackTrace);
                    }
                    catch (OverflowException f)
                    {
                        Console.WriteLine("数值超出float范围的异常，异常已处理");
                        Console.WriteLine(f.Message);
                        Console.WriteLine(f.Source);
                        Console.WriteLine(f.StackTrace);
                    }
                    catch (Exception f)
                    {
                        Console.WriteLine("异常已处理！");
                        Console.WriteLine(f.Message);
                        Console.WriteLine(f.Source);
                        Console.WriteLine(f.StackTrace);
                    }
                    finally
                    {
                        Console.WriteLine("最终处理！");
                    }
                    diction.Add(str, d);
                Console.WriteLine("继续输入任意内容：结束请输入1");
                int s = int.Parse(Console.ReadLine());
                if (s==1)
                {
                    break;
                }
                }
                float Count = diction.Count;
                float sum = 0;
                foreach (var values in diction.Values)
                {
                sum += values;
                }
                float age = sum / Count;
                Console.WriteLine("总学生数为{0}，总分数为{1}，平均分为{2}", Count, sum, age);
            }
        }

        }
    